﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using vensoft.Entities;

namespace vensoft.DataAccess
{
    public class ProveedorDataAccess: MasterDataAcess,IProveedorDataAccess
    {
        public ProveedorDataAccess()
            :base()
        {}
            
        public List<Entities.Proveedor> GetAllFromProveedor()
        {
            SqlCommand commando = base.CreateSelectCommand("GetAllFromProveedor");
            return SelectObjectFactory(commando);
        }

        private List<Proveedor> SelectObjectFactory(SqlCommand commando)
        {
            List<Proveedor> lista = new List<Proveedor>();
            
            using(SqlDataReader reader = base.ExecuteReader(commando))
            {
                while(reader.Read())
                {
                    Proveedor proveedor = new Proveedor()
                    {
                        codigo_Proveedor = reader.GetInt32(0),
                        razon_social = reader.GetString(1),
                        telefono = reader.GetString(2),
                        Descripcion = reader.GetString(3),
                        RUC = reader.GetString(4),                          
                    };
                    lista.Add(proveedor);
                }
            }
            return lista;
        }

        public List<Proveedor> GetFromProveedorByNombre(string criterio)
        {
            SqlCommand command = base.CreateSelectCommand("GetFromProveedorByNombre");
            command.Parameters.AddWithValue("@raz_soc", criterio);
            return SelectObjectFactory(command);
        }

        public void RegistarProveedor(Proveedor proveedor)
        {
            SqlCommand command = base.CreateCommand("RegistarProveedor");
            AddParametersp(proveedor, command);
        }

        private void AddParametersp(Proveedor proveedor, SqlCommand command)
        {
            base.AddInParameter(command, "codigoProveedor", proveedor.codigo_Proveedor);
            base.AddInParameter(command, "razon_social", proveedor.razon_social);
            base.AddInParameter(command, "telefono", proveedor.telefono);
            base.AddInParameter(command, "descripcion", proveedor.Descripcion);      
            base.AddInParameter(command, "RUC", proveedor.RUC);
            base.ExecuteCommand(command);
        }

        public void EliminarProveedor(Proveedor proveedor)
        {
            SqlCommand comand = base.CreateCommand("EliminarProveedor");
            base.AddInParameter(comand, "RUC", proveedor.RUC);
            base.ExecuteCommand(comand);
        }
    }
}
